/**
 * 
 */
package org.tcp.client.pool;

import java.util.Map;

/**
 * 连接池配置数据
 * 
 * @author kucheng.liao@autonavi.com
 * @Date Sep 19, 2014
 */
public interface PoolConfig {
	/**
	 * 枚举
	 * 
	 * @author kucheng.liao@autonavi.com
	 * @Date Sep 19, 2014
	 */
	public static enum PoolConfigEnum {
		/**
		 * the max connections of pool
		 */
		POOL_MAX,
		/**
		 * the min connections of pool
		 */
		POOL_MIN,
		/**
		 * ip
		 */
		IP,
		/**
		 * port
		 */
		PORT,
		/**
		 * 空闲时间
		 */
		HEAT_TEST_TIME,
		/**
		 * 心跳间隔时间
		 */
		HEAT_TIME,
		/**
		 * 心跳协议数据
		 */
		HEAT_PRO;

		private PoolConfigEnum() {

		}
	}

	/**
	 * get all parameters
	 * 
	 * @return
	 */
	public Map<PoolConfigEnum, String> getConfig();

	/**
	 * validate the parameter
	 * 
	 * @return
	 */
	public boolean validate();

	/**
	 * add the parameter to config;
	 * 
	 * @param k
	 * @param v
	 */
	public void add(PoolConfigEnum k, String v);

	/**
	 * add all parameters of map to config
	 * 
	 * @param parameters
	 */
	public void addAll(Map<PoolConfigEnum, String> parameters);

}
